package 作业.切割字符串;

import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static cn.hutool.core.util.NumberUtil.calculate;

/**
 * 掌握java中字符流的基本使用
 * **需求描述**：
 * // 项目根路径下有个questions.txt文件内容如下：
 * 5+5
 * 150-25
 * 155*155
 * 2555/5
 * // 要求：读取内容计算出结果，将结果写入到results.txt文件中
 * 5+5=10
 * **实现提示**：
 * 1. 应该从文件中，把数据一行一行读出来
 * 2. 拿到数据后，判断哪个不是数字，则使用不是数字的字符，切割字符串
 * 3. 再把切割后的字符串，转成数字
 * 4. 再匹配切割的字符的类型，进行相应的操作
 */
public class Test {
    public static void main(String[] args) throws IOException {

        /*不知道为啥没有try catch就无法运行*/File inputFile = new File("H:\\javabase_ws2\\java_advance\\Day11_io\\src\\作业\\切割字符串\\questions.txt");
        File outputFile = new File("H:\\javabase_ws2\\java_advance\\Day11_io\\src\\作业\\切割字符串\\results.txt");
        //  IOUtils.readLines(inputFile, "utf-8").forEach(line -> System.out.println(line));
      try(  BufferedReader br = new BufferedReader(new FileReader(inputFile));
        BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile));
      ) {
          String line;
          while ((line = br.readLine()) != null) {
              line = line.trim();
              if (line.isEmpty()) continue;
              Matcher matcher = Pattern.compile("(\\d+)([\\+\\-\\*\\/])(\\d+)").matcher(line);
              if (matcher.find()) {
                  int num1 = Integer.parseInt(matcher.group(1));
                  String operator = matcher.group(2);
                  int num2 = Integer.parseInt(matcher.group(3));

                  int rs = calculate(num1, operator, num2);
                  bw.write(line + "=" + rs + '\n');
              }

          }
      }catch (Exception e) {
          System.err.println("出错: " + e.getMessage()); // 友好提示
      }
    }

    private static int calculate(int num1, String operator, int num2) {
        switch (operator) {
            case "+":
                return num1 + num2;
            case "-":
                return num1 - num2;
            case "*":
                return num1 * num2;
            case "/":
                return num1 / num2;
                default:throw new RuntimeException("未知操作符：" + operator);
        }
    }
}
